package com.dux.commons.scripts.java.url;

import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLStreamHandler;

import com.dux.commons.scripts.java.ScriptClassLoader;



/**
 * 接收 {@value #HANDLER_PROTOCOL} 协议的URL流处理程序
 * 
 * @author 杜祥
 * @create 2013-5-11
 */
public class VirtualClassURLStreamHandler extends URLStreamHandler 
{
	
	/**
	 * 从源代码编译的类脚本处理协议
	 */
	public static final String HANDLER_PROTOCOL = "aescrpit://";
	
	/**
	 * 脚本类加载器
	 */
	private final ScriptClassLoader cl;
	
	
	/**
	 * 创建新的实力，并给类加载器URL的处理。
	 * @param cl
	 */
	public VirtualClassURLStreamHandler(ScriptClassLoader cl)
	{
		this.cl = cl;
	}
	
	
	/**
	 * 打开一个新的脚本URL连接
	 * @param u 
	 * 				url
	 * @return 开启的连接
	 * @throws IOException
	 * 				
	 */
	@Override
	protected URLConnection openConnection(URL u) throws IOException 
	{
		return new VirtualClassURLConnnection(u, cl);
	}

}
